// Springs - Version 1.3

// このスクリプトは、ポップアップメニューに表示される２つのレイヤーをスプリングで結び付けます。
// レイヤーは、 ワークエリアの
// 開始時と同じ速度で続行します。

//      レイヤー												プロパティ             チャンネル
//      ------													----------               --------
// 1: スプリングで２番目のレイヤーと結び付けられるレイヤー      使用しない               使用しない
// 2: スプリングで１番目のレイヤーと結び付けられるレイヤー      使用しない               使用しない

if (time() == start_time) {
	rest_length = 50;					// 力を加えていないときのスプリングの長さ（ピクセル単位）
                                       //  この値を変更して、スプリングの長さを調整
	damp = 0.95;								// 減衰力（０＝摩擦力無限大、１＝摩擦力なし）

	p1 = value(pop_layer(1), position);
	p2 = value(pop_layer(2), position);

	last_p1 = tmap(time() - step_time, value(pop_layer(1), position));
	last_p2 = tmap(time() - step_time, value(pop_layer(2), position)); 

	v1 = (p1 - last_p1);
	v2 = (p2 - last_p2);
} else {
	delta = p2 - p1;
	n_delta = normalize(delta);

	a = n_delta * (length(delta) - rest_length) * step_time;

	v2 = (v2 - a) * damp;
	v1 = (v1 + a) * damp;

	p1 = p1 + v1;
	p2 = p2 + v2;
}
value(pop_layer(1), position) = p1;
value(pop_layer(2), position) = p2;